#include <bits/stdc++.h>

using namespace std;

const int N=310,INF=0x3f3f3f3f;

int n,m,ret;
vector<pair<int,int>> a[N];
int dist[N];
bool st[N];

void prime()
{
	memset(dist,0x3f,sizeof dist);
	dist[1]=0;
	for(int i=1;i<=n;i++)
	{
		int t=0;
		for(int j=1;j<=n;j++)
		{
			if(!st[j]&&dist[j]<dist[t]) t=j;
		} 
		if(dist[t]==INF) return;
		
		st[t]=true;
		ret=max(ret,dist[t]);
		
		for(auto& e:a[t])
		{
			int x=e.first,y=e.second;
			dist[x]=min(dist[x],y);
		}
	}
	return;
}

int main() 
{
	cin>>n>>m;
	for(int i=1;i<=m;i++)
	{
		int x,y,z;cin>>x>>y>>z;
		a[x].push_back({y,z});
		a[y].push_back({x,z});
	}
	prime();
	cout<<n-1<<" "<<ret<<endl;
	return 0;
}
